/**
 * @author bipul_sinha
 * @version 1.0
 * @created 10th November, 2010.
 *
 * IFlaggable
 *
 * Copyright @ 2010 by 
 * All Rights Reserved.
 * CONFIDENTIAL AND TRADE SECRET
 */
package com.ces.knacky.framework.model;

import com.ces.knacky.model.Flag;

/** 
 * It is used to provide a rule for all sub classes to have multiple states based on the event 
 * occurs on the object such as Insert, Update, Delete, etc.
 *      
 * @author bipul_sinha
 * @see AbstractParentEntity
 * @see AbstractChildEntity
 * @see AbstractMasterEntity
 * @see AbstractTenantEntity
 * @see IEntity
 * 	
 */
public interface IFlaggable {

	 /**
     * This method provides a contract to use flags to represent different states of persistent 
     * object on the basis of the logging mechanism. It returns the current flagId value of the
     * persistent object.  
     * 
     * @return 	Integer
     * 			Represents flag id of the current persistent object.	
     */
    public Flag getFlag ();

	 /**
     * This method provides a contract to use flags to represent different states of persistent 
     * object on the basis of the logging mechanism. It is used to change/set the current flagId 
     * value of the persistent object.  
     * 
     * @return 	Integer
     * 			Represents flag id of the current persistent object.	
     */
    public void setFlag (Flag flag);

}

